/*
 * CoefficientType.hpp
 *
 * Copyright 2012 Fabian Wenzelmann
 *
 * This file is part of Recognition-Procedures-for-Boolean-Functions.
 *
 * Recognition-Procedures-for-Boolean-Functions is free software: you
 * can redistribute it and/or modify it under the terms of the
 * GNU General Public License as published by the Free Software Foundation,
 * either version 3 of the License, or (at your option) any later version.
 *
 * Recognition-Procedures-for-Boolean-Functions is distributed in the hope
 * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General
 * Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with Recognition-Procedures-for-Boolean-Functions.
 *
 * If not, see <http://www.gnu.org/licenses/>.
 */

#ifndef COEFFICIENTTYPE_HPP_
#define COEFFICIENTTYPE_HPP_

#include <limits>
#include <utility>

namespace bfr {

/**
 * Coefficient type for LPBs.
 *
 * If you change this type take care that there is an
 * <code>infinity</code> value for this type,
 * i. e. <code>std::numberic_limits<lpb_coefficient_t</code>
 * should be true (there is an assert for this in the main function).
 */
typedef float lpb_coefficient_t;

/**
 * Positive infinity value for coefficients.
 */
const lpb_coefficient_t coeff_pos_infinity =
        std::numeric_limits<lpb_coefficient_t>::infinity();

/**
 * Negative infinity value for coefficients.
 */
const lpb_coefficient_t coeff_neg_infinity =
        -std::numeric_limits<lpb_coefficient_t>::infinity();

/**
 * The type of the intervals in the tree.
 */
typedef std::pair<lpb_coefficient_t, lpb_coefficient_t> interval_t;

}

#endif  // COEFFICIENTTYPE_HPP_
